在c\c++程序里怎么执行shell脚本命令?

我想用nc命令测试udp端口的可用性。在shell里直接输入命令行#nc-u127.0.0.122,然后输入字符,如果可连接,不提示错误,否则提示nc:Writeerro... 我想用nc命令测试udp端口的可用性。
在shell里直接输入命令行# nc -u 127.0.0.1 22,然后输入字符,如果可连接,不提示错误,否则提示nc: Write error: Connection refused。
如何把以上操作写成c/c++程序?
展开
 我来答
吉祥二进制
高粉答主

2013-02-21 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84580

向TA提问 私信TA
展开全部
在C/C++源码中执行shell命令,最基本的就是 system() C库函数,其次可以使用系统提供的api函数,比如windows上的createprocess shellexecuteex等函数,在linux上可以使用exec()等等.

下面是我在windows上的弄的一个测试版本,使用了线程,我感觉用nc来测试,不如直接 netstat -an | findstr /I "udp" | findstr "22" ,因为22端口太其特了,很容易抓出来. 另外nc判断端口常规的作法就是 nc -vv ip port 看提示信息就好了.

#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <windows.h>
#include <process.h>
UINT __stdcall ThreadFunc(LPVOID lpParam) {
//将hacker字符串做为nc提交的数据
int ret = system("echo hacker | nc.exe -u 127.1 22");
//ret==0说明没有开启22端口
if (ret == 0 ) printf("nc: Write error: Connection refused.\n");
return 0;
}
int main()
{
HANDLE hThread = (HANDLE)_beginthreadex(0, 0, ThreadFunc, 0, 0, 0);
//等待3秒钟,说明22端口可用
WaitForSingleObject(hThread, 3000);
//结束测试线程
TerminateThread(hThread, 0);
//重新开启NC连接22端口
system("nc.exe -vv -u 127.1 22");
return 0;
}

欢迎光临0x30贴吧,一个高质量的计算机技术交流平台.
追问
谢谢你的回答!
我现在编写了一点,代码如下:
char nc[1024];
memset(nc, 0, 1024);
sprintf(nc, "nc -uvzw2 %s %d > UdpPortCheck.txt", m_ip, m_port);
system(nc);
sleep(2);

其中nc -uvzw2 ip port 重定向到UdpPortCheck.txt中,我想知道现在用什么函数抓取文件中的字符串?
追答
fopen() fread()
736700329
2013-02-22 · TA获得超过2058个赞
知道小有建树答主
回答量:8325
采纳率:0%
帮助的人:2252万
展开全部
执行shell命令的C / C + +源代码,基本系统()API函数的C库函数,第二,我们可以使用该系统,如Windows CreateProcess的ShellExecuteEx函数,可以用来在Linux上执行( ),依此类推。

后,在窗户上,我得到一个测试版本,使用线程测试我的感觉NC,不如直接netstat-an的| FINDSTR / I“UDP”FINDSTR“22”;因为22端口太特殊了,很容易中招了。另一个判断端口的惯常做法NC NC-VV IP端口的样子消息。

#包括
#包括
包括
#包括
包括
UINT __ stdcall调用约定的ThreadFunc(LPVOID lpParam){
/ /提交的数据被黑客字符串为:nc
诠释RET =系统(回声黑客nc.exe-U 127.1 22“);
/ / RET == 0指令打开22端口
(RET == 0)printf(”请NC:写错误:连接被拒绝。\ n“);
返回0;
}
廉政的main()
{
的HANDLE初的=(HANDLE)_beginthreadex(0,0,的ThreadFunc,0,0,0);
/ /等待3秒,说明22端口
WaitForSingleObject的(hThread 3000);
/ /结束测试线程 TerminateThread(初的,0);
/ /重新打开NC连接到22端口
系统(nc.exe 127.1-VV-U,22);
返回0;
} />
欢迎0X30糊状,高品质的电脑技术交流平台。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式