上海通用广电_linux下c语言编程

2020-07-11 作者 : 浏览量:526
linux下c语言编程
实在点,些命令操作,不象有点多,哈哈
Linux/Unix常用命令
1、目录操作
和DOS相似,UNIX采用树型目录管理,由根目录(/)开始一层层将子目录建下去,各子目录以 / 隔开。用户login后,工作目录的位置称为homedirectory,由系统管理员设定。‘~’符号代表自己的homedirectory,例如~/myfile 是指自己home目录下myfile这个文件。
(1)显示目录文件ls
执行格式:ls[-atFlgR] [name](name可为文件或目录名称)
例:ls显示出当前目录下的文件
ls-a显示出包含隐藏文件的所有文件
ls-t按照文件最后修改时间显示文件
ls-F显示出当前目录下的文件及其类型
ls-l显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称
ls-lg同上
ls-R显示出该目录及其子目录下的文件
注:ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more"),更多用法请输入ls --help查看,其它命令的更多用法请输入命令名 --help查看.

(2)建新目录mkdir
执行格式:mkdirdirectory-name
例:mkdirdir1(新建一名为dir1的目录)
(3)删除目录rmdir
执行格式:rmdirdirectory-name或rmdirectory-name
例:rmdirdir1删除目录dir1,但它必须是空目录,否则无法删除
rm-rdir1删除目录dir1及其下所有文件及子目录
rm-rf dir1不管是否空目录,统统删除,而且不给出提示,使用时要小心

(4) 改变工作目录位置cd
执行格式:cd[name]
例: cd改变目录位置至用户login时的workingdirectory
cddir1改变目录位置,至dir1目录
cd~user改变目录位置,至用户的working directory
cd..改变目录位置,至当前目录的上层目录
cd../user改变目录位置,至上一级目录下的user目录
cd/dir-name1/dir-name2改变目录位置,至绝对路径(Fullpath)
cd-回到进入当前目录前的上一个目录

(5)显示当前所在目录pwd
执行格式:pwd
(6)查看目录大小du
执行格式:du[-s]directory
例:dudir1显示目录dir1及其子目录容量(以kb为单位)
du-sdir1显示目录dir1的总容量
(7)显示环境变量
echo $HOME显示家目录
echo $PATH显示可执行文件搜索路径
env显示所有环境变量(可能很多,最好用"env | more","env |grep PATH"等)
(8)修改环境变量,在bash下用export,如:
export PATH=$PATH:/usr/local/bin
想知道export的具体用法,可以用shell的help命令:help export
2、文件操作
(1)查看文件(可以是二进制的)内容cat
执行格式:cat filename或more filename 或cat filename|more
例:cat file1以连续显示方式,查看文件file1的内容
morefile1
或catfile1|more 以分页方式查看文件的内容
(2)删除文件rm
执行格式:rmfilename
例:rmfile?
rmf*
(3)复制文件cp
执行格式:cp[-r]sourcedestination
例:cpfile1file2将file1复制成file2
cpfile1dir1将file1复制到目录dir1
cp/tmp/file1将file1复制到当前目录
cp/tmp/file1file2将file1 复制到当前目录名为file2
cp-rdir1dir2(recursivecopy)复制整个目录。
(4)移动或更改文件、目录名称mv
执行格式:mvsourcedestination
例:mvfile1file2将文件file1,更名为file2
mvfile1dir1将文件file1,移到目录dir1下
mvdir1dir2
(5)比较文件(可以是二进制的)或目录的内容diff
执行格式: diff [-r] name1 name2(name1、name2同为文件或目录)
例:difffile1file2比较file1与file2的不同处
diff-rdir1dir2比较dir1与dir2的不同处
(6)文件中字符串的查找grep
执行格式:grepstringfile
例:grepabcfile1查找并列出串abc所在的整行文字
(7)文件或命令的路径寻找
执行格式一:whereiscommand显示命令的路径
执行格式二:whichcommand显示路径及使用者所定义的别名
执行格式三:whatiscommand显示命令的功能摘要

(8)建立文件或目录的链接ln
例:lnsourcetarget1建立source文件(已存在)的硬链接,命名为target1
ln -ssourcetarget2建立source文件的符号链接,命名为target2

文件编辑器vi
vi是在UNIX 上被广泛使用的中英文编辑软件。vi是visualeditor的缩写,是UNIX提供给用户的一个窗口化编辑环境。
进入vi,直接执行vi编辑程序即可。
例:$vitest.c
显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。编辑完成后,使用者可决定是否要取代原来旧有的文件。
1、vi的工作模式
vi提供二种工作模式:输入模式(insertmode)和命令模式(commandmode)。使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等操作。要输入信息,应转换到输入模式。
(1)命令模式
在输入模式下,按ESC可切换到命令模式。命令模式下,可选用下列指令离开vi:
:q! 离开vi,并放弃刚在缓冲区内编辑的内容
:wq 将缓冲区内的资料写入磁盘中,并离开vi
:ZZ 同wq
:x 同wq
:w 将缓冲区内的资料写入磁盘中,但并不离开vi
:q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用

(2)命令模式下光标的移动
H 左移一个字符
J 下移一个字符
K 上移一个字符
L 右移一个字符
0 移至该行的首
$ 移至该行的末
^ 移至该行的第一个字符处
H 移至窗口的第一列
M 移至窗口中间那一列
L 移至窗口的最后一列
G 移至该文件的最后一列
W, W 下一个单词 (W 忽略标点)
B, B上一个单词 (B 忽略标点)
+ 移至下一列的第一个字符处
- 移至上一列的第一个字符处
( 移至该句首
) 移至该句末
{ 移至该段首
} 移至该段末
NG 移至该文件的第n列
N+ 移至光标所在位置之后第n列
n- 移至光标所在位置之前第n列

(3)输入模式
输入以下命令即可进入vi输入模式:
a(append)在光标之后加入资料
A在该行之末加入资料
i(insert) 在光标之前加入资料
I在该行之首加入资料
o(open) 新增一行于该行之下,供输入资料用
O 新增一行于该行之上,供输入资料用
dd 删除当前光标所在行
X 删除当前光标字符
x 删除当前光标之前字符
U 撤消
• 重做
F 查找

ESC键 离开输入模式

GNU C编译器
LINUX上可用的C编译器是GNUC编译器,它建立在自由软件基金会编程许可证的基础上,因此可以自由发布。
LINUX 上的GNUC编译器(GCC)是一个全功能的ANCIC兼容编译器。下面介绍GCC和一些GCC编译器最常用的选项。
1、使用GCC
通常后跟一些选项和文件名来使用GCC编译器。GCC命令的基本用法如下:
gcc [options] [filenames]
命令行选项指定的编译过程中的具体操作
2、GCC常用选项
GCC有超过100个的编译选项可用,这些选项中的许多可能永远都不会用到,但一些主要的选项将会频繁使用。很多的GCC选项包括一个以上的字符,因此必须为每个选项指定各自的连字符,并且就像大多数LINUX 命令一样不能在一个单独的连字符后跟一组选项。例如:
gcctest.c
编译成功后,当前目录下就产生了一个可执行文件a.out。
也可用-o选项来为即将产生的可执行文件指定一个文件名来代替a.out。例如:
gcc-ocountcount.c
此时得到的可执行文件就不再是a.out,而是count。
3、执行文件
格式:./可执行文件名
例:./a.out
./count本回答由推荐gcc是在linux下很流c/c++的编译工具,
An Introduction to gcc 可以找个中文的pdf,是本的gcc入门书
当然你喜欢集成环境,可以装个别的,比如kdevelop,这个跟vs2005还是很象的,不过本人不怎么使用集成环境,——_——!
而且这些集成环境大部分也是构建在gcc的基础之上,所以还是推荐先学gcc,代码的话写在文本里就可以你,只要后缀是c或着是cc(cpp)就可以了本回答被提问者采纳gccvim+gcc
有本外国人写的书叫Unix/Linux程序设计,挺好的,不知道你找的到不eclipse那么牛的程不像是学校的考试题。
起码是linux
下的C语言编程,搞嵌入式开吧。
我也来试试,正想向这个研究呢。呵呵
另:公司只能上百度,只能这里给你了.
#include
#include
#include
#include
#define
LEN
100
main()
{
int
fd,
len;
int
i;
char
ch[LEN];
fd=open("test.txt",O_CREAT|O_RDWR,10705);
if(fd)
{
for(i=1;i<101;i++)
{
sprintf(ch,"%d",i);
write(fd,ch,strlen(ch));
}
close(fd);
}
fd
=
open("test.txt",O_RDWR);
lseek(fd,50,SEEK_SET);
if(fd)
{
len
=
read(fd,ch,1);
ch[len]
=
'\0';
printf("%s\n",ch);
}
lseek(fd,100,SEEK_SET);
if(fd)
{
len
=
read(fd,ch,1);
ch[len]
=
'\0';
printf("%s\n",ch);
}
close(fd);
if(!remove("test.txt"))
printf("test.txt
have
remove\n");
else
printf("can't
remove\n");
}
这是第一题.
linux下的C语言编程需要什么
  一具的使用
  1、学用vim/emacs,vim/emacs是linux下最常用的源码编辑具,要学会用它们源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。
  2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。
  3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。
  4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。
  二、linux/unix系统调用与标准C库
  系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称APUE)。
  三、库的学习
  无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。
  1、glib库
  glib 库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和 linux下的集群软件heartbeat.因为glib库自带有基本的数据结构实现,所以在学习glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。
  2、libxml库
  libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。
  3、readline库
  readline 库是bash shell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。readline库有很多网站介绍的,只要google一下readline就可以找到一堆了。
  4、curses库
  curses 库以前是vi程序的一部分,后来从vi里提取出来成为一个独立的库。curses库对于编写终端相关的程序特别有用,比如要在终端某一行某一列定位输出,改变终端字体的颜色和终端模式。linux下的curses库用的是GNU实现的ncurses(new curses的意思)。
  5、gtk+和KDE库
  这两个库是开发GUI应用程序的基础库,现在linux下的大部份GUI程序都是基于这两个库开发的,对于它们 的学习也是很有必要的。
  四、网络的学习本回答由推荐
Linux下的C编程和Windows下有什么区别?越详细越好,谢谢......
Linux 简单跟 Windows 一样是一种操作系统,只是两者之间的使用方法和习所区别。具体的区别很大,不过已经不是能在这里说清楚的事情了。
对于 C 编程来说,他们最大的区别就是提供给你的系统相关的特性不一样。这个导致了所谓的移植性问题以及平台特性的问题。形象点的比喻是你可以认为 Linux 和 Windows 都是人。他们都懂一部分英语,但是一个的母语是汉语,一个是德语。你用的英语如果他们刚好都懂,那他们就能很好的帮你做事。如果你说的英语他们不懂,那就只能用他们的母语给他们说。这样的结果就是你用德语说的 Linux 听不懂;你用汉语说的 Windows 又听不懂。所以,如果是简单的编程,那他们没有多大区别。如果是复杂的...你就准备翻译一方的母语成另一方的母语吧。都是操统
不同是一个开放源代码一个放
系统的结构不一样
比如说 设备都像访问文件一样访问,脚言很强大操作方式有差别
c程序方面,用的函数库不一样,只要函数库、有些如文件系统表示方面的差异解决好了,编译的程序可以通用。
linux的核心也是C语言写的
C程序通常是用文本编辑器写,GCC编译器编译,make来管理项目,虽然也有集成开发环境,但很多都不需要,win的编程高手也是用的文本编辑器开发。
linux的命令行(就像win里的cmd)很强大,可以一次完成很复杂的任务而不需要写软件。本回答被网友采纳系统的话一点都没有区别。只是你选择的软件会稍有不同。但是作为C的语法一点都没有变。推荐Linux下使用Geany。中文的,操作方便,体积小。用起来十分爽。函的区别
linux下的c函数库和windows下的函数库调用的不一样
glibc包含了主要的c库。这个库提供了例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。所说的机制不一样不单是指中断号的问题,中断号也是通过input参数和output把函数地址和输出地址定位在寄存器的,那些函数在windows和linux下的实现应该是不一样的,就拿文件系统来说,ext3和fat32的怎么可能一样.还有mm内存管理,都是不一样的.中断还是属于硬件层的,x86上的应该都差不多,但操作系统层的实现就大不相同了.
其他区别:
1。系统平台不一样
底层开发就涉及到了系统内核的问题,对于linux来说,你可以知道它里面是什么结构,而windows。。。
2。编译器环境不一样
linux采用gcc编译器,gdb调试工具,和多种可视化的编辑器如
emacs,kedit等等,也有文本的vi/vim,gdb的功能是非常强大的,个人认为较win下的好
尽管win下地mingw,devcpp集成了gcc,但是搞的总让人不爽~,gcc对标准的支持是相当的好
3。针对人群不一样
win下主要还是面向商业化的开发,而绝大多数的编程爱好者则喜欢属于自己开阔自由的系统下编程,不愿意禁锢在windows下(ms)的包围中
4。发展方向不一样。
opensource的思想已经在linux这片净土开花,参见gpl....。找资料方便,源代码公开,可以体验开发的乐趣
win下,ms逐步把一批开发人员束缚在它自己的系统里面,开发环境越来越傻瓜,这能不能叫人性化呢?搞到最后。。。可能越走越远~
5。版权问题
win下的好多好多东西都涉及到版权问题,linux的free软件虽然是开放软件,不过好多好多都是免费用于商业化的。。。当然有的需要开发源代码,好多也不需要~
c++的区别也差不多
linuxc语言编程?
库的区别linux下的C函数库和windows下的函数库系统的机一样Glibc包含了主要的C库。库提供了基本例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。所说的机制不一样不单是指中断号的问题,中断号也是通过input参数和output把函数地址和输出地址定位在寄存器的,那些函数在windows和linux下的实现应该是不一样的,就拿文件系统来说,ext3和fat32的怎么可能一样.还有mm内存管理,都是不一样的.中断还是属于硬件层的,X86上的应该都差不多,但操作系统层的实现就大不相同了.其他区别:
1。系统平台不一样 底层开发就涉及到了系统内核的问题,对于linux来说,你可以知道它里面是什么结构,而windows。。。
2。编译器环境不一样 linux采用gcc编译器,gdb调试工具,和多种可视化的编辑器如 emacs,kedit等等,也有文本的vi/vim,GDB的功能是非常强大的,个人认为较win下的好 尽管win下地mingw,devcpp集成了gcc,但是搞的总让人不爽~,gcc对标准的支持是相当的好
3。针对人群不一样 win下主要还是面向商业化的开发,而绝大多数的编程爱好者则喜欢属于自己开阔自由的系统下编程,不愿意禁锢在windows下(MS)的包围中
4。发展方向不一样。 OpenSource的思想已经在linux这片净土开花,参见GPL....。找资料方便,源代码公开,可以体验开发的乐趣 win下,ms逐步把一批开发人员束缚在它自己的系统里面,开发环境越来越傻瓜,这能不能叫人性化呢?搞到最后。。。可能越走越远~
5。版权问题 win下的好多好多东西都涉及到版权问题,linux的free软件虽然是开放软件,不过好多好多都是免费用于商业化的。。。当然有的需要开发源代码,好多也不需要~C++的区别也差不多