私はCプログラム経由でBASHコマンドを実行しようとしていますが、私はexecv関数で苦労しています。私は実際にその関数の最初のパラメータを書く方法を知らない。私はstrcat関数を使って文字列 "/ bin /"をargvタブの最初の要素に追加しようとしました。これはプログラムを実行するときに書き込むコマンドですが、動作しません。私は「セグメンテーション違反」を取得します。 strcat関数を使う代わりにstrdupを使ってみましたが、それを正しく使う方法はわかりません。Cプログラム経由でBASHコマンドを実行
ご協力いただければ幸いです。私のプログラムは以下の通りです。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[], char *envp[]){
char *tab[] = {argv[1],NULL};
if(execve(strcat("/bin/",argv[1]), tab, envp)==-1)
{
perror("execve");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
基本的に、Cで2つの文字列を連結する方法を尋ねているだけですか?あなたはCチュートリアルを読もうとしましたか? – melpomene
私はどのように連結するかを尋ねていませんが、これが連結についてのものであれば、関数strcatは十分であるはずです。しかし、そうではありません。だから私はプログラムを動作させるためにexecv関数を使う別の方法について助けを求めている。 – TheScientist
それがあなたが求めているものでなければ、あなたが求めるべきものです。明らかに、 'strcat'が何をするのか、あるいはC文字列がどのように動作するのか理解していません。 ( 'strcat'の最初の引数として文字列リテラルを渡すことは決して意味がありません) – melpomene