求助:请教关于调用子程序spawn函数的问题和FP_OFF,FP_SEG函数的问题

troyleescong 2006-08-04 01:16:09
我用以下格式调用子程序:
spawnlp(P_WAIT, "ping", "127.0.0.1", NULL)
或者 spawnlp(P_WAIT, "cmd", "dir", NULL)

ping和cmd是被调用了出来,但是参数却没有被传过去,请问为什么呢??

其次,我用Djgpp编译器编译的时候,发现它不支持Tc中的FP_OFF和FP_SEG函数,请问有其他替代函数吗?
谢谢!!
...全文
277 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
troyleescong 2006-08-07
  • 打赏
  • 举报
回复
还有高手帮我解答一下吗??
troyleescong 2006-08-05
  • 打赏
  • 举报
回复
To: jixingzhong(瞌睡虫:选择了远方,只顾风雨兼程!)
困难是我要调用int86x(0x13,&in,&out,&sregs)函数,所以要先设置in和sregs结构体, in.x.si = FP_OFF(&DAP_package);
sregs.ds = FP_SEG(&DAP_package);
请问有什么办法解决吗? 谢谢
troyleescong 2006-08-05
  • 打赏
  • 举报
回复
To: Dear all
关于子程序调用函数spawnlp的问题已经基本解决了,多谢Torrice(酷爱C++) 的提醒,确实要在参数串前加上""空串,另外,参数串中不能有空格,有则分开为两个参数。
Torrice 2006-08-04
  • 打赏
  • 举报
回复
cmd带参数时有特殊的格式,看看关于cmd的说明就知道了,正确写法如下:

#include "stdio.h"
#include "process.h"
#include <conio.h>


int main()
{
spawnlp(P_WAIT,"cmd","/c","dir",NULL);
getch();
return 0;
}
Tom_Tan 2006-08-04
  • 打赏
  • 举报
回复
学习....
Torrice 2006-08-04
  • 打赏
  • 举报
回复
加个空格
Torrice 2006-08-04
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "process.h"
#include <conio.h>


int main()
{
spawnlp(P_WAIT,"ping"," 127.0.0.1",NULL);
getch();
return 0;
}
Torrice 2006-08-04
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "process.h"
#include <conio.h>


int main()
{
spawnlp(P_WAIT,"ping"," ","127.0.0.1",NULL);
getch();
return 0;
}
jixingzhong 2006-08-04
  • 打赏
  • 举报
回复
需要说明一下,
由于 spawn 第一个参数是 P_WAIT,
也就是原来的程序是不终结的,
execlp 替换不成立,因为它会结束原来的程序 ...
jixingzhong 2006-08-04
  • 打赏
  • 举报
回复
test.exe 程序代码:
int main(int argc, char *argv[])
{
int i;
for(i=1; i<argc; i++)
{
puts(argv[i]); //输出参数
}
system("PAUSE");
return 0;
}

编译后得到 test.exe,
然后:
int main()
{
spawnlp(P_WAIT, "test", "test", "1", "2") ;
getch();
return 0;
}
jixingzhong 2006-08-04
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<process.h>
char *envString[]={
"COMM_VECTOR=0x63",
"PARENT=LAUNCH.EXE",
"EXEC=EDIT.COM",
NULL};

void main(int argc,char **argv)
{
_spawnvpe(_P_OVERLAY,"EDIT.COM",argv,envString);
printf("If can read this sentence,the exec did'nt happen!\n");
}

用 spawn 函数族的 v 函数 ...
jixingzhong 2006-08-04
  • 打赏
  • 举报
回复
int execlp( char *pathname,char *arg0,char *arg1,…,NULL)
jixingzhong 2006-08-04
  • 打赏
  • 举报
回复
现在,
已经不需要对指针做这些操作了 ...

现在的指针一般都是 32 位的,
这个 分偏移和段 指针部分,
是在 16 位环境中的 ....
jixingzhong 2006-08-04
  • 打赏
  • 举报
回复
Tc中的FP_OFF和FP_SEG
两个宏,
分别得到远指针或者是 巨型指针的 偏移指针 和段指针

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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