C 使用exec系统函数,调用“ls -l”

这样写有什么错?


/*execl.c*/

#include "exec.h"

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

int ps()

{

if(fork()==0)

{

/*调用execl函数,注意这里要给出ps程序所在的完整路径*/

if(execl("ps","ps","-aux",NULL)<0)

perror("execl error!");

}

 

}

 

int ls()

{

if(fork()==0)

{

/*调用execl函数,注意这里要给出ps程序所在的完整路径*/

if(execl("ls","ls","-l",NULL)<0)

perror("execl error!");

}

 

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2个回答

那照你这么说,在unix的环境中,只定义了/bin/sh,难道系统运行的时候,就只能执行shell,C程序就不能执行了吗?如果你用shell调用了一个ls的命令,但是ls是个可执行程序,难道这个shell就不能执行了?execl("/bin/sh", "sh", "-c", cmdstring, (char*)0)的确是调用了一个shell命令,但是没说shell命令就不能执行C程序了。比如你在命令行下敲了一个C程序,为什么能执行呢?请深刻理解unix的程序调用。

发布于 2019-03-16 14:25
查看更多

你这部分程序看不出有什么问题

但问题是你的程序不完整

1.

#include "exec.h"

你的exec.h是什么(它不是系统的,是自己定义的)

2.

你的程序少了主函数main,所以它不是一个完整的C程序


发布于 2019-03-16 14:20
查看更多
外卖券领取

相关问题

支持语音或者文本回复

语音最长一分钟

点击录音开始,最短不低于3秒