#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
命令以及为什么前两个参数必须相同:execl("/bin/ls", "/bin/ls", "-l", NULL);
这个效果很好,有人可以帮帮我吗?
非常感谢!
答案 0 :(得分:2)
考虑使用system()代替:
system("/bin/ls -l > temporar.txt");
或使用execl调用/bin/sh
重定向流:
execl("/bin/sh", "/bin/sh", "-c" , "/bin/ls -l >temporar.txt", NULL);
execl的第一个参数是要执行的命令,第二个是要传递给命令的第一个参数(argv [0]),第三个和下一个 - 其他参数argv [1] ...
答案 1 :(得分:2)
~$ 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