相关疑难解决方法(0)

Linux中"system"和"exec"的区别?

systemexec家庭命令有什么区别?特别是我想知道哪一个创建子进程工作?

c linux fork exec

67
推荐指数
4
解决办法
7万
查看次数

使用fork()和execl()输出重定向

我想使用fork()在我的程序中生成一个新进程.新进程只有一个任务:将鼠标输入重定向到串行端口.我在终端窗口中成功测试了以下命令:hexdump/dev/input/mice>/dev/ttyS0

到目前为止,我已经设法使用fork来创建子进程,但我的问题是我似乎无法使我的execl()方法正常工作:

execl("/usr/bin/hexdump", "hexdump", "/dev/input/mice > /dev/ttyS0", (char*) NULL);
Run Code Online (Sandbox Code Playgroud)

我也试过其他变种,像这样:

execl("/usr/bin/hexdump", "hexdump", "/dev/input/mice", ">", "/dev/ttyS0", (char*) NULL);
Run Code Online (Sandbox Code Playgroud)

但总是有相同的结果,退出值为1(一般错误).

还值得一提的是,我已经设法通过使用popen()方法使其工作,您可以在其中输入与在终端中完成的命令完全相同的命令.popen()的问题在于我没有找到终止进程的好方法.使用fork()我得到PID,并可以使用以下命令终止进程:

kill(pid, SIGKILL);
Run Code Online (Sandbox Code Playgroud)

这是一项要求,因为我必须能够在程序运行时根据需要停止并重新启动输出重定向.

c++ linux

4
推荐指数
1
解决办法
7832
查看次数

标签 统计

linux ×2

c ×1

c++ ×1

exec ×1

fork ×1