当前位置: 技术问答>linux和unix
[求救]新手有问题求助,谢谢帮忙!
来源: 互联网 发布时间:2015-08-25
本文导语: 刚刚接触Linux,要写一个小的程序,功能是给定文件名和执行次数,就可以执行文件多次的程序. 现在我使用了system()和 execl()函数,当用循环执行多次时,不能正常执行,system()是执行一次关闭后才会执行下一条,而execl()执行...
刚刚接触Linux,要写一个小的程序,功能是给定文件名和执行次数,就可以执行文件多次的程序.
现在我使用了system()和 execl()函数,当用循环执行多次时,不能正常执行,system()是执行一次关闭后才会执行下一条,而execl()执行一次后就不执行了,不知道什么原因,请告知,谢谢了.
还有一事,我想写的程序要实现如下功能,不知从何处下手:
我要让我的程序打开多个终端,并且在各个终端上都执行一个程序(如ls 命令),不知需要什么函数?用使用多线程吗?
感谢帮忙,谢谢了!
现在我使用了system()和 execl()函数,当用循环执行多次时,不能正常执行,system()是执行一次关闭后才会执行下一条,而execl()执行一次后就不执行了,不知道什么原因,请告知,谢谢了.
还有一事,我想写的程序要实现如下功能,不知从何处下手:
我要让我的程序打开多个终端,并且在各个终端上都执行一个程序(如ls 命令),不知需要什么函数?用使用多线程吗?
感谢帮忙,谢谢了!
|
system调用是阻塞调用,即只有执行完了一条命令才返回
execl是使用新程序替换当前程序,所有execl后面的代码不会被执行到
你可以采用fork的方式来创建进程然后执行,或者在执行system时候将命令设置为后台执行
打开多个终端要你把终端打开,然后将文件描述符号重定向,再执行程序
可能最简单的方法是使用write命令将消息发送到各个终端。
execl是使用新程序替换当前程序,所有execl后面的代码不会被执行到
你可以采用fork的方式来创建进程然后执行,或者在执行system时候将命令设置为后台执行
打开多个终端要你把终端打开,然后将文件描述符号重定向,再执行程序
可能最简单的方法是使用write命令将消息发送到各个终端。
|
1。楼上的已经回答了,就是fork后,新进程运行exec程序,调用你的程序就可以了!
2。fork后,新进程打开终端,然后用dup2将标准输出,标准输入,标准出错重定向,调用exec。
2。fork后,新进程打开终端,然后用dup2将标准输出,标准输入,标准出错重定向,调用exec。