执行shell脚本不等待返回值
① 在shell脚本中,比如执行一个命令,在等待3秒后,没有这个命令的结果,就执行下一条,这个怎么写呀
wget ...
touch finished
}
func &
sleep 3000
if [ -f finished ]
then
echo "finished"
else
echo "not finished"
fi
rm -f finished
建议阅读linux相关书籍 比如说《linux就坦尺基该这么学让谨》。困卜
② 如何在c语言中执行shell命令
在c语言中调用shell命令的方法实现。
c程序调用shell脚本共有两种方法
:system()、popen(),分别如下:
system()
不用自己去创建进程,系统已经封装了这一步,直接加入自己的命令即可
popen()
也可以实现执行的命令,比system
开销小
以下分别说明:
1)system(shell命令或shell脚本路径);
system()
会调用fork()产生
子历程,由子历程来调用/bin/sh-c
string来履行
参数string字符串所代表的命令,此命令履行
完后随即返回原调用的历程。在调用system()期间sigchld
信号会被暂时搁置,sigint和sigquit
信号则会被漠视
。
返
回值:如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(null),则返回非零值。
如果
system()调用成功
则最后会返回履行
shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因
此最好能再反省
errno
来确认履行
成功
。
system命令以其简略
高效的作用得到很很广泛
的利用
,下面是一个例子
例:在/tmp/testdir/目录下有shell脚本tsh.sh,内容为
#!/bin/sh
wget
$1
echo
"done!"
2)popen(char
*command,char
*type)
popen()
会调用fork()产生
子历程,然后从子历程中调用/bin/sh
-c来履行
参数command的指令。参数type可应用
“r”代表读取,“w”代表写入。遵循此type值,popen()会建立
管道连到子历程的标准
输出设备
或标准
输入设备
,然后返回一个文件指针。随后历程便可利用
此文件指针来读取子历程的输出设备
或是写入到子历程的标准
输入设备
中。此外,所有应用
文
件指针(file*)操作的函数也都可以应用
,除了fclose()以外。
返回值:若成功
则返回文件指针,否则返回null,差错
原因存于errno中。注意:在编写具suid/sgid权限的程序时请尽量避免应用
popen(),popen()会继承环境变量,通过环境变量可能会造成系统安全的问题。
例:c程序popentest.c内容如下:
#include
main
{
file
*
fp;
charbuffer[80];
fp=popen(“~/myprogram/test.sh”,”r”);
fgets(buffer,sizeof(buffer),fp);
printf(“%s”,buffer);
pclose(fp);
}
③ linux中怎样让shell脚本等待其他脚本文件执行完
在shell里写一个条件判断语句,去查询上一条命令执行的结果,如果执行成功则执行下面的语句。
如是上面的命令是一个简单的命令,就用sleep来控制。这都是常用方法
④ 请高手帮看看,执行这个shell脚本咋没结果,也 没报错,也没结果
脚碧败本中大部分内容都是函数,主体部分只有变量赋值,没有任何打印输出语句。
最后一悔蚂颤个函数all_do_autobak中调用了其余的所有函数,但其本身并没有在函数主体部分被调用。
主体中至少要物闹调用一下 all_do_autobak 函数,这样执行脚本至少会生成一些log文件。
⑤ ShellExecuteWait函数不等待是怎么回事
可以用信号api函数。比如waitforsingleobject() 系列的函数是可以等待的。
⑥ shell脚本的一个返回值问题。
首先,要理解 (( )) 这个符号用作数学运算或整数的逻辑比较,一个例子:
[ “$a” -lt 16 ] 等同于 (( a < 16 ))
$?则是返回上一个命令的执行结果,成功(逻辑真)返回0,失败(逻辑假)返回1。
本题中,
(( 0 )) 返回逻辑假(false),所以$?返回1;
(( 1 )) 返回逻辑真(true),所以$?返回0。
⑦ 一个语法正确的shell脚本正常运行结束后,系统返回值是什么
你可以使用$?来查看脚本执行后的返回,
echo $? 为0的话表明执行成功,非零表示有误,具体的返回值可能是脚本内部提供的!
⑧ 如何让shell语句中的 while循环语句不等待一个php执行完就进行下一个循环
用SHELL子茄孝进颤判稿程,
....
(/usr/local/bin/冲汪php a.php)
.....
⑨ java执行带参数的shell脚本并返回值
文件名确实不对
.sh文件才是linux下的批处理文件,它不认bat的
另外要保证.sh中调用的其他函数在当前目录下能正常运行
⑩ linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行(在线)
方法1:
在传入system()的亩陵源参数字迅态符串结尾加'&'字汪历符,要求在后台运行
方法2:
先fork()出子进程,然后在子进程中调用system()函数