C++ 等待解压完成,然后再执行C++;红帽机上的代码

C++ 等待解压完成,然后再执行C++;红帽机上的代码,c++,zip,redhat,unzip,C++,Zip,Redhat,Unzip,我想在我的Redhat机器上解压缩一个压缩文件夹 为此,我向字符串发送一个bash脚本 "unzip /usr/bin/Folder.gz" 这解压文件夹没有问题,因为在我得到的一般 inflating folderA/folderB/fileX 等等 但是,我希望在解压命令处保留代码,等待解压完成 我试过使用 sleep(5) 但我不想使用它,只希望它总是需要不到五秒钟的时间,特别是对于非常小的压缩文件,这将是低效的 我在网上搜索过,但没有结果 所以我的问题是,;在解压完成之前暂停程序

我想在我的Redhat机器上解压缩一个压缩文件夹

为此,我向字符串发送一个bash脚本

"unzip /usr/bin/Folder.gz"
这解压文件夹没有问题,因为在我得到的一般

inflating folderA/folderB/fileX
等等


但是,我希望在解压命令处保留代码,等待解压完成

我试过使用

sleep(5)
但我不想使用它,只希望它总是需要不到五秒钟的时间,特别是对于非常小的压缩文件,这将是低效的

我在网上搜索过,但没有结果

所以我的问题是,;在解压完成之前暂停程序的可靠方法是什么


过肩:红帽

编程语言:C++

IDE:Eclipse

尝试:

unzip /usr/bin/Folder.gz &
wait $!
这将导致shell等待最后一个进程的完成。最后执行的命令的pid存储在
$中

不确定这与C++有关,但是如果您想从代码中执行同样的操作,可以使用<代码> WaistPID < /Cuff>函数> < /P> 当然,如果你想让你的程序在
解压
执行时阻塞,我有点搞不清楚确切的问题是什么。假设您使用的是
系统
或其他等效工具来运行解压,它应该会一直阻塞,直到命令完成。

请尝试:

unzip /usr/bin/Folder.gz &
wait $!
这将导致shell等待最后一个进程的完成。最后执行的命令的pid存储在
$中

不确定这与C++有关,但是如果您想从代码中执行同样的操作,可以使用<代码> WaistPID < /Cuff>函数> < /P>
当然,如果你想让你的程序在
解压
执行时阻塞,我有点搞不清楚确切的问题是什么。假设您使用的是
系统
或其他等效程序来运行解压,它应该会一直阻塞,直到命令完成。

我不知道这是过度还是低效,但您可以将解压过程移动到另一个线程,停止主线程,直到该线程完成处理

我不知道这是过度还是低效,但您可以将解压缩过程移动到另一个线程,并停止主线程,直到该线程完成处理

如何运行bash脚本

如果使用
system()
API,它将启动程序,然后等待生成的进程结束


system()
system是一个由其他3个系统调用组成的调用:execl()、wait()和fork()

如何运行bash脚本

如果使用
system()
API,它将启动程序,然后等待生成的进程结束


system()
system是一个由其他3个系统调用组成的调用:execl()、wait()和fork()

我不确定这是不是最好的方法,但它是可靠的。 现在只需将命令发送到bash,为什么不将输出发送到某个文件

unzip /usr/bin/Folder.gz > output.txt

从你的C++代码中定期读取文件(比如说1秒),一旦找到100%或输出的最后一行应该包含什么,然后继续执行你的代码。

< P>我不确定这是最好的方法,但是它是可靠的。 现在只需将命令发送到bash,为什么不将输出发送到某个文件

unzip /usr/bin/Folder.gz > output.txt

从C++代码中定期读取文件(比如说1秒)一旦找到了100%条或是最后一行的任何内容,然后继续执行代码。< /P>你如何发送字符串——即,你发送字符串的C++代码如何?即C++代码为什么不简单使用<代码> unZip/Ur/bin/文件夹?Gz < /代码>没有<代码>和<代码>?在C++中,你只需做<代码>系统(“unZip/Ur/bin /文件夹.gz”)< /C>(而不是Foo/Reviv/WaITPID),这是正确的,我不久就编辑了我的答案。我的印象是OP想在等待

解压
完成时完成工作,然后在流程完成时加入。为什么不简单地使用
解压/usr/bin/Folder.gz而不使用
&
?在C++中,你只需做<代码>系统(“unZip/Ur/bin /文件夹.gz”)< /C>(而不是Foo/Reviv/WaITPID),这是正确的,我不久就编辑了我的答案。我的印象是OP希望在等待
解压完成时完成工作,然后在流程完成时加入。我已经按照您的建议使用了system命令。然而,有很多人说使用系统命令是禁忌。为什么会这样?应该怎么做?@Andy:这是一个相关的问题,但另一个问题和这个问题。请把它作为一个新问题发布。我已经按照你的建议使用了系统命令。然而,有很多人说使用系统命令是禁忌。为什么会这样?应该怎么做?@Andy:这是一个相关的问题,但另一个问题和这个问题。请将其作为新问题发布。