在linux下c用system调用exe问题

sevenpng 2008-11-04 10:27:17
我自己有一个exe程序,a.exe,我现在想在C中通过system调用它,现在我把c文件,exe程序都放在同一级目录下。调用格式怎么写啊,有参数要传给a.exe的话又该怎么传啊。
system("a.exe");不行 提示:sh: a.exe: command not found
在a.exe前加上绝对路径就提示:Permission denied

各位 有招没?
...全文
263 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sevenpng 2008-11-04
  • 打赏
  • 举报
回复
果然高手
xhs_lh04 2008-11-04
  • 打赏
  • 举报
回复
首先你要确保你在命令行模式下能运行a.exe
检查有没执行权限
ls -l a.exe
看有没有权限里有没x项

没有chmod a+x a.exe
另外就是在调用的时候要保证路径正确,可用
printf(cmdline, "%s/a.exe", getenv("HOME"));
system(cmdline);
tian428 2008-11-04
  • 打赏
  • 举报
回复
终端中怎么用, system()中就怎么用
system("./a.exe");
参数 system("./a.exe arg1 arg2 ...");
资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在C语言中,system()函数是一个功能强大的工具,它允许程序员调用操作系统级别的命令,例如启动其他程序或运行Shell命令等。该函数定义在头文件中,其语法为:int system(const char *command);。其中,command参数是一个指向字符串的指针,该字符串包含了需要执行的命令。函数执行完成后会返回一个整数值:如果命令执行成功,通常返回命令的退出状态码(一般情况下,0表示成功,非0表示出错);如果函数本身调用失败,则返回-1。 在Linux环境下,system()函数的实现过程如下: 参数检查:如果command参数为空,system()函数会直接返回1,表示命令无效。 创建子进程:通过调用fork()函数创建一个子进程。fork()会在父进程和子进程中分别返回不同的值:在子进程中返回0,在父进程中返回子进程的进程ID。 子进程执行命令:子进程调用execl()函数来执行指定的命令。在这个过程中,execl()使用/bin/sh作为可执行文件,"sh"作为程序名称,"-c"作为参数,而cmdstring则是具体的命令字符串。 父进程等待子进程结束:父进程通过调用waitpid()函数来等待子进程完成,并获取其退出状态码。 返回结果:system()函数将子进程的退出状态码作为结果返回给调用者。 在Windows系统中,system()函数的实现则依赖于ShellExecute()函数。ShellExecute()函数的原型为:HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpVerb, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory,

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧