1
#include<stdio.h>
#include<unistd.h>
#include<string.h>
#define MAXLINIE 100


main(int argc, char* argv[]) {
    if (fork()==0){

        execl("/bin/> temporar.txt", "/bin/> temporar.txt", ">temporar.txt", NULL);

    }
}

基本的に、私がやろうとしているのは、UNIX でプロセスを使用してファイルを作成することです。これが私のコードですが、何らかの理由で機能しません。execlコマンドと、最初の 2 つのパラメーターが同じでなければならない理由がよくわかりません。 :execl("/bin/ls", "/bin/ls", "-l", NULL);これはうまくいっています。誰か助けてくれませんか?

どうもありがとう!

4

2 に答える 2

2

最初の検索whereistouch :

~$ whereis touch
touch: /bin/touch /usr/bin/touch /usr/bin/X11/touch 

使用: int execl(const char *path, const char *arg, ...);

execl("/bin/touch", "touch", "filename", NULL);
          ^            ^         ^         ^
       command       command   argument    
        path           name
                     arg 0     arg 1    
于 2013-04-14T11:03:07.940 に答える
2

代わりに system() を使用することを検討してください。

system("/bin/ls -l > temporar.txt");

または、execl 呼び出し/bin/shを使用してストリームをリダイレクトします。

execl("/bin/sh", "/bin/sh", "-c" , "/bin/ls -l >temporar.txt", NULL);

execl の最初のパラメーターは実行するコマンド、2 番目はコマンドに渡される最初のパラメーター (argv[0])、3 番目と次の - 他の引数 argv[1] ...

于 2013-04-14T10:57:57.220 に答える