Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Windows上与MSVC++一起使用exec()?

如何在Windows上与MSVC++一起使用exec()?
EN

Stack Overflow用户
提问于 2021-04-26 13:21:30
回答 1查看 640关注 0票数 0

我试图将为POSIX编写的Fortran代码移植到Windows。据我所见,大多数程序都可以在Windows上编译,只需要修改几个小命令。

在程序的fortran部分中,有一行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
call system("exec xmrcc >> output.log")

问题是,windows没有任何exec命令。但是,经过一番研究,我发现在linux上,exec命令使用底层的execvp()调用。在Windows上,MSVC++提供_exec()和相关函数系列。_execlp()_execlpe()似乎是我想要的。

因此,我想用一个C函数替换fortran系统调用,这个函数将环绕execlpe()并调用程序xmrcc.exe。

但是,我不知道这些函数是如何工作的!我读过Microsoft关于exec的文档使用execl (论点)C-在windows中使用exec()。在遵循最后一个链接问题的公认答案之后,我编写了这个C代码来测试_execlp()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <windows.h>
#include <process.h>

int main()
{
    printf("started running");
    _execlp("C::\\WINDOWS\\SYSTEM32\\CMD.EXE", "cmd.exe", "/c",
 "echo", "foo",">G:\\Python\\foo.txt");
}

但是,在运行编译后的代码时,我只得到输出“开始运行”,然后返回;G:\Python中没有foo.txt文件。然后我想可能是输出重定向引起了问题,所以我删除了它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    _execlp("C::\\WINDOWS\\SYSTEM32\\CMD.EXE", "cmd.exe", "/c", "echo", "foo");

还是一无所获。它只打印“开始运行”,不打印"foo“。

我有两个主要问题:

  1. 如何在_execlp()上正确运行?(运行xmrcc.exe并将输出定向到日志)
  2. 是否有必要使用_execlpe() 来传递环境变量?(我不明白这是如何工作的)。

我正在使用MicrosoftVisualC++ v19编译器。

[请不要提及锡格温,或交友或WSL,他们不是我要找的。我知道fortran中的系统调用是不受欢迎的,但我没有编写程序,我只是在移植它。

我需要使用_execlp(),因为它完全用子进程替换调用进程,并且是最接近linux exec命令的。这是必要的,因为程序的其他部分使用PIDS,因此必须不生成具有不同PID的子进程。]

编辑:删除exec命令有效吗?与call system("xmrcc >> output.log)一样,@ChrisDodd的评论中也提到了这一点。

EN

回答 1

Stack Overflow用户

发布于 2021-04-27 03:59:18

有两件事需要修复:

  1. 冒号:'C‘之后不应该加倍
  2. _execlp期望参数列表中有一个null来检测没有更多的参数。

因此,这是可行的:

_execlp("C:\\WINDOWS\\SYSTEM32\\cmd.EXE", "cmd.exe", "/c", "echo", "baz", ">c:\\test\\bar.txt", nullptr);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67273978

复制
相关文章
如何在windows 7 上使用docker
但是我们可以通过安装docker toolbox来实现在windows7上使用docker.
Vincent-yuan
2019/10/15
2K0
如何在Windows上使用Python进行开发
一直以来C#都是微软在编程语言方面最为显著的Tag,但时至今日Python已经从一个小众语言,变成了世界编程语言排行榜排名前列的语言了。
葡萄城控件
2019/07/27
3.1K0
如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/79337881
hotqin888
2018/09/11
3.3K0
如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档
Windows下ThinkPHP与Linux互通之exec或shell_exec问题
最近在做一个项目需要用到PHP调用Linux命令行脚本,在服务器执行命令是可以的,但是当放在项目代码中,在web中执行命令就不行了,调试了一天,终于可以了!
php007
2019/11/07
1.9K0
Windows下ThinkPHP与Linux互通之exec或shell_exec问题
如何在Windows10上使用Linux系统?
Windows作为日常办公绝对是垄断地位,强大的生态链和易用性让用户工作起来很方便,但是作为一个程序开发者, Linux系统才是王道,但是Linux的局限性,使人们也离不开windows, 所以会采用PC上安装双系统或者在Windows里面安装虚拟机跑Linux系统,双系统不能做到同时共存,虚拟机又比较卡顿,所以使用WSL,即在Windows安装Linux子系统成为了很多人的选择,本文主要介绍如何开启WSL和安装Linux系统,让windows和linux共存。
极简小课
2022/06/21
5.6K0
如何在Windows10上使用Linux系统?
[视频]如何在电脑上实现Linux与windows双系统
最近忙于个人的事情,很久没有给大家分享知识,实在抱歉,非常感谢大家一直以来的支持!
极客开发者
2022/01/18
2.5K0
[视频]如何在电脑上实现Linux与windows双系统
如何在Bash Shell脚本中使用`exec`命令?
exec 是一个在Bash Shell脚本中使用的命令,它允许您替换当前进程的内容,包括进程ID和文件描述符。使用exec命令可以实现一些有用的功能,例如替换脚本当前的Shell进程、切换到不同的命令解释器、重定向标准输入输出等。本文将详细介绍如何在Bash Shell脚本中使用exec命令,并提供一些常见的用例和示例。
网络技术联盟站
2023/06/08
3.7K0
如何在 Windows 上安装 Python
你是否想学习编程呢?可以从 Python 开始,它因为简洁的语法和面向对象的特性而非常受欢迎,是最常见的编程语言之一。而且 Python 是一门解释型语言,这意味着你无需知道如何把 Python 代码编译为机器语言 —— Python 会帮你做到这一点,从而使你能够在编写代码的同时立即进行测试。
用户1880875
2021/09/15
2.2K0
如何在 Windows 上使用 NVM 安装 Node.js?
NVM(节点版本管理器)是用于在您的系统上安装 Node.js 的命令行实用程序。它允许我们安装多个 Node.js 版本并在它们之间切换。这对于运行需要不同 2 个节点版本的多个节点应用程序的系统很有帮助。
网络技术联盟站
2022/03/06
3.1K0
如何在 Windows 上使用 NVM 安装 Node.js?
如何在Windows电脑上使用LDSC软件(3) ------ LDSC实操与结果解读
前两期的内容带大家学习了如何在windows系统上安装Linux子系统以及LDSC的安装,今天我将带大家正式开展LDSC分析并解读相关结果。
生信与临床
2022/08/21
4K4
如何在Windows电脑上使用LDSC软件(3) ------ LDSC实操与结果解读
如何在Windows上使用Python,看看微软的官方教程
随着Python持续火热状态,微软开始重视Python在Windows系统上的运行,于是它出品了一个官方教程。这个教程包含了入门,web开发,自动化和脚本,数据库,常见问题,资源。
HuangWeiAI
2019/12/17
8480
如何在Windows上使用Python,看看微软的官方教程
如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档「建议收藏」
ONLYOFFICE Document Server提供文档协作的服务功能,支持Word,Excel和PowerPoint以及国产WPS的协作。但是这里告诉我们,需要进行文档管理和存储的二次开发。它api里现成的开发好的文档管理平台,有java,node.js,PHP等,可能不具备权限功能吧。
全栈程序员站长
2022/07/23
4.2K0
如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档「建议收藏」
如何在 Windows 上搭建 PHP 网站
PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。
Dust
2018/10/24
10.2K0
如何在 Windows 上搭建 PHP 网站
如何在Windows电脑上使用LDSC软件(2)------LDSC的安装
在上一期的内容中,我带大家完成了Linux子系统的安装,今天我们就要开始在Linux子系统上安装LDSC了,这也是一个很大的坑!!!
生信与临床
2022/08/21
5.1K2
如何在Windows电脑上使用LDSC软件(2)------LDSC的安装
如何在 Windows 系统上使用 CUDA 运行 Mozilla TTS/Coqui TTS 培训?
我有一台带有 Quadro P5000 显卡的机器,运行 Windows 10。我想在这个系统上训练 TTS 语音。我需要安装什么才能使它正常工作?
CiiLii西里网
2023/08/23
7530
如何在 Windows 系统上使用 CUDA 运行 Mozilla TTS/Coqui TTS 培训?
如何在Windows上安装Python【Programming(Python)】
所以你想学习编程吗?Python是最常见的语言之一,它以面向对象的结构和简单的语法的独特结合而流行。Python还是一种解释型语言,这意味着您无需学习如何将代码编译为机器语言:Python可以帮您实现这一点,从而使您有时可以在编写代码的同时立即进行测试。
Potato
2019/12/01
1.9K0
如何在Windows上安装Python【Programming(Python)】
如何在windows上优雅的用centos
今天我发现了一个新方法,我觉得相比较于前两种还是十分优雅的,下面就介绍一下如何搞linux子系统。
Tom2Code
2022/04/15
2.5K0
如何在windows上优雅的用centos
苹果应用如何在windows上架应用?
如今,有很多跨平台移动开发工具出现了,许多开发人员选择了这些快速发展。应用平台。因此,有些开发人员可能没有配备Mac计算机,并且在上传iOS APP时可能会受到阻碍。
iOS Magician
2023/03/22
4680
苹果应用如何在windows上架应用?
如何在电脑上多开微信?(windows)
新媒体管家 在电脑上多开微信,在工作中很常见,今天来介绍一种简单的方法。(windows下) 这个问题在百度和知乎上都有许多回答,很多都是:长按Enter 电脑上怎么登录几个微信(微信多开)? 这种方
小歪
2018/04/04
3.3K0
如何在电脑上多开微信?(windows)
windows 上使用virtualen
近期因为需要在python2.7和Python3.5上进行工作学习,可是笔记本只配置了python3.5环境。 所以打算使用virtualenv这个强大的工具进行多版本转换
py3study
2020/01/09
4500
windows 上使用virtualen

相似问题

vi编辑器中的^M字符

11

如何在Vi编辑器中删除CRLF

21

如何在VI编辑器中删除选定的文本?

289

如何在vi编辑器中删除多行特殊字符

10

删除shell脚本中每行末尾的^M

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文