当前位置:  技术问答>linux和unix

C语言中执行shell脚本出错(菜鸟求助)

    来源: 互联网  发布时间:2016-07-24

    本文导语:  程序很简单,如下: int main() {    ...........    ...........    system("cd /etc/test");    system("./file.sh");    ..........    .......... } 出错提示:sh:./file.sh: No such file or directory 但是,/etc/test/目录下的file.sh文件确实存...

程序很简单,如下:
int main()
{
   ...........
   ...........
   system("cd /etc/test");
   system("./file.sh");
   ..........
   ..........
}
出错提示:sh:./file.sh: No such file or directory
但是,/etc/test/目录下的file.sh文件确实存在啊,并且已经执行了命令:chmod a+x file.sh了。

|
再试试这个
  system("cd /etc/test; ./file.sh"); 

|
你把c程序跟file.sh放在同一个目录试一试

|
如果实在不行,这样写:
char shellname[64];
memset(shellname,0,sizeof(shellname));
sprintf(shellname,"/etc/test/file.sh");
system(shellname);
这样应该是可以的。

|
  system("cd /etc/test");
    system("pwd");  // 看看这里什么结果。我想不会是/etc/test,而是原来的目录
  system("./file.sh"); 

|
$ man system
......
       int system(const char *command);
DESCRIPTION
       system()  executes a command specified in command by calling /bin/sh -c
       command
......

我是这么理解的:system函数是通过调用/bin/sh来执行指定命令,也就是说它会另外启动一个shell来执行命令,所以转换目录只在那个新启动的shell里有效。而对于原来这个shell,它还在原来的目录里。

|

两个system不在同一个shell中运行,所以会找不到,合并成一个,用全路径如
system("/etc/test/file.sh"); 

|


解释到点上了

|
可能是

|
你的第一个system会创建一个子进程,cd不过影响这个子进程。所以你的第二个system会抱怨找不到sh文件,因为前面那个cd根本就没有影响到它。

    
 
 

您可能感兴趣的文章:

  • 菜鸟问题——其他语言怎样使用Java编写的程序(明确地说,使Class)
  • 菜鸟问题:如何了解系统关于某个C语言变量类型是怎样定义的?
  • 菜鸟提问:关于linux(unix)c语言编程问题?
  • 菜鸟关于操作系统代码中一个C语言语法的问题...
  • 菜鸟问题:在linux下,c语言编写程序,要连接openoffice.org base作为数据库!
  • HTML 脚本语言介绍及<script>标签用法
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • 请问如何在C语言中嵌入的shell脚本中获得C语言程序中定义的某个变量
  • 谁能简单介绍一下LINUX上的各种语言脚本的功能.
  • 脚本编程语言 Crack
  • 结构化脚本语言 puppy
  • J2ME脚本语言 ZincScript
  • 关于脚本语言的选择
  • 图形脚本语言 Sikuli
  • 求助:linux脚本语言写SQL语句
  • 脚本语言 SparForte
  • 脚本编程语言 Felix
  • 多脚本语言模板引擎 Tenjin
  • 面向对象的脚本语言 Bento
  • 面向对象的脚本语言 ObjectScript
  • 脚本编程语言 CrawlScript
  • 脚本语言 newLISP
  • 在LINUX下做文本处理的工作,一般是用SHELL脚本还是动态语言方便?
  • C++脚本语言 ChaiScript
  • 一个简单的原创脚本语言 Boby
  • 脚本语言 execline
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C语言读取MySQL的NULL值出错
  • 急啊!mingw gcc 3.4.5 下,在C语言main函数中,调用汇编程序中定义的函数始终出错!
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 动态编程语言 LIME编程语言
  • docker中文入门学习手册 iis7站长之家
  • C语言如何改变当前语言环境
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • c语言基于libpcap实现一个抓包程序过程
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • HTML超文本标记语言教程及实例
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • MD5算法的C语言实现
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3