QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1079|回复: 9

关于SHELL编程的几题?

[复制链接]
发表于 2004-3-24 12:53:35 | 显示全部楼层 |阅读模式
我们教师布置了几题上机题,教师要我们自己上网查,小弟在网上找了半天,仍然不知道头绪,所以又来麻烦各位了,希望大哥大姐们帮帮忙:

1、先在VI里编一个从键盘输入一个字符串,然后输出到屏幕上的C程序编译连接运行。(这个自己没什么问题)
2、用SHELL程序做:将1程序编译连接、运行在SHELL程序中完成。(这个就郁闷了,总不知道如何下手)
3、将该SHELL程序运行:A>前台运行 B>后能运行。(第二题不知道如何做。这题就不知所云了)
4、将启动SHELL程序运行的命令行的参数传到C程序中去。

(题目多了点,请见谅,实在没办法,我在网上找了好久的资料,在这里先谢谢大家了,最好都告诉我一下具体的解题答案和思路,或者告诉我要看哪些方面的资料也行,谢了!
发表于 2004-3-24 13:29:08 | 显示全部楼层
可以在SHELL中运行命令时,后就 &
这样程序会进入后台运行
例如:
[omelan@localhost omelan]$ find /usr/ -name mozilla &
[2] 4148
/usr/bin/mozilla
回复

使用道具 举报

 楼主| 发表于 2004-3-24 16:19:48 | 显示全部楼层
谢谢你的回复!

终于有人回复了!

怎么写一个SHELL程序,这点是关键!
回复

使用道具 举报

 楼主| 发表于 2004-3-24 16:39:14 | 显示全部楼层
???

能回答具体点吗??!
回复

使用道具 举报

发表于 2004-3-24 21:28:28 | 显示全部楼层
谈谈我的想法:
其实,你的很多问题。我不知道什么意思。你看看我理解的是否正确。
第2题:
编译一个程序,在SHELL中运行,
你直接用文本编译器,写处.c的原代码,然后用gcc -c -o project project.c
然后开一个SHELL,直接运行你的程序,不就完成?(除非你的代码有问题,无法编译通过)
第3题:
SHELL,A前台运行,B后台运行,
一般在SHELL里执行一个可执行程序,例如ls /mnt/ 默认它会在前台运行,及只有等待程序运行完毕,SHELL才将控制权给你,你才可以继续执行其他命令。
然后后台程序,是SHELL执行完毕后,将控制权立即返回,例如我们在一个很多文件的文件夹里查找一个文件。
find /usr -name mozilla
程序通常要执行很长时间,这时,你不能继续执行其他命令,所以这个时候,你可以在执行这个非常消耗时间的命令后面加上 &
例如:
find /usr -name mozilla &
这样SHELL执行后,立即返回。这里并不代表已经很快的执行完毕了。只是,在后台运行,随时将命令的查找结果返回给你。这时,你可以继续执行其他命令。
第4题:
实话,我不太理解什么意思?
是不是要在代码里面调用其他的程序?
你可以查找exec 函数方面的资料。
回复

使用道具 举报

 楼主| 发表于 2004-3-24 21:56:51 | 显示全部楼层
辛苦了,非常感谢。不好意思,有几题意思没表达清楚。
第一题解题答案如下:先在VI里写这样一个程序:
main()
{
  char str[20];
  gets(str);
  puts(str);
}
取名1.c
后用有命令提示符(DOS下是这么叫的,liunx可能叫shell吧,我知道的不太清楚)
编译连接:gcc -o 1 1.c    运行:./1
搞定!!!!


第二题的意思,就好像在DOS里写一个批处理一样,把程序和编译连接运行都放在一个程序里。就是这点是最让我搞不清的,就是不知道如何写这样的一个类似BAT的。

如果第二题搞的定。第三题就没问题了。

第二题搞的定。第四题也没多大问题。。就是写c程序的时候,在main里加两个形参。也就是所谓的命令行输入!


所 以关键是第二题那个类型BAT的shell程序的写法!

不知道 我说明白没有!


再次感谢njue斑主!又麻烦了!
回复

使用道具 举报

发表于 2004-3-24 22:20:01 | 显示全部楼层
就好像在DOS里写一个批处理一样:
你可以通过&&来同时执行多个命令,
例如:
./configur && make && make install

编译,安装一步完成.
这个是最简单的几个命令执行.
你可以通过SHELL脚本完成更多的你说的BAT,
包括定义变量,然后通过顺序,选择,循环等常用的语法结构来完成你的要求.甚至可以自己定义函数,基于C的语法,建议,你去参看一下SHELL编程.推荐你看黄色封面的一本书.<Linux编程宝典>,如果没有记错,里面第一章说的就是SHELL编程.
回复

使用道具 举报

 楼主| 发表于 2004-3-24 22:54:53 | 显示全部楼层
收到,但能否把第二题的答案写出来,这也就是我发帖最想要的东东,这也是我目前最急于解决的问题,谢谢你推荐的书。我会去找来看看的!
回复

使用道具 举报

发表于 2004-3-24 23:39:28 | 显示全部楼层

Re: 关于SHELL编程的几题?

[quote:64ad82477f="duangjian"]
2、用SHELL程序做:将1程序编译连接、运行在SHELL程序中完成。(这个就郁闷了,总不知道如何下手) [/quote]

不知道是不是你要的BAT啊.
===========
SHELL:bs001
下次希望你不要到这里再来要家庭作业了.
我的家庭作业也没有做好啊.
===========
[code:1]
echo "#include <stdio.h>" >> ./test1.c
echo "int main(void)" >> ./test1.c
echo "{"        >>./test1.c
echo "printf(\"nihao!\\n\");"        >> ./test1.c
echo "return 0;" >> ./test1.c
echo "}"        >> ./test1.c
gcc -o test1 test1.c
./test1
[/code:1]
回复

使用道具 举报

发表于 2004-3-25 08:34:40 | 显示全部楼层
看看make相关文档先,估计是这个意思
这个程序在编译连接时如果遇到错误,还得能正常的终止

一个建议而已
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 19:44 , Processed in 0.045728 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表