搞清楚ourhdr.h是什么及运行第一个UNIX C程序
好多人开始学;UNIX 环境高级编程这本书时;看到书里面说的头文件ourhdr.h而找不到她在哪里;而且无法开始继续学习;其实这个就是系统的内核标准头文件;
而她的位置在:/usr/include/unistd.h 这里;
其实UNIX系统下面的目录:/usr/include 目录;放着好多系统要用到的头文件;目的就是让我们开发者调用系统环境已经开发好的函数库;而不用再重新写这些函数;
如下面的:
getuid() 获取当前登录用户的用户id
getpid() 获取当前登录用户的用户组id
这些函数已经在unistd.h 里面声明而且已经系统给实现了。
而ourhdr.h在书里面是指 我们用户系统环境的标准头文件;这下大家应该明白了。
root@DK:/usr/include# ls unistd.h
-rw-r--r-- 1 root root 42100 1月 15 11:16 unistd.h
root@DK:/usr/include# pwd
/usr/include
下面是我们的第一个c程序;她里面的 getuid(), getgid() 函数;已经在 我们的标准unistd.h 头文件里声明了;所以可以执行调用;
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void){
printf("hello world from process ID %d\n",getpid());
char *p = getlogin();
printf("目前登录用户: %c \n",*p);
printf("用户ID:%d 当前用户组ID:%d \n",getuid(), getgid());
exit(0);
}
输出结果:
daokr@DK:~/myfile$ ./process
hello world from process ID 15114
目前登录用户: d
UID:1000 GID:1000
daokr@DK:~/myfile$
这个是一个好的开头;明白了;linux 系统内部头文件在什么位置;下面就举一反三的学习 UNIX环境编程这本书就慢慢开始了~~
希望和我一起开始学习UNIX编程!我这里有PDF格式的;UNIX环境高级编程中文版.pdf 下载;有需要的可以联系我;我送你;一起学习!
搞清楚ourhdr.h是什么及运行第一个UNIX C程序的更多相关文章
- iOS 11开发教程(三)运行第一个iOS 11程序
iOS 11开发教程(三)运行第一个iOS 11程序 运行iOS11程序 创建好项目之后,就可以运行这个项目中的程序了.单击运行按钮,如果程序没有任何问题的话,会看到如图1.6和1.7的运行效果. 图 ...
- 运行第一个Node.js程序
初学Node.js,萌新一枚.感觉Node.js挺不错的,从基础开始一步一步来,加油吧! 我们来使用Node.js的express来运行第一个程序helloworld: 在命令提示符键入express ...
- .NET Core初体验 - 在Mac下运行第一个Web示例程序
要说最近两天程序猿之间最喜欢吹水的事是什么?那绝壁是甲骨文要放弃Java!简直做梦都要笑醒!由于公司的产品线全面转向Java,最近几个月也一直在苦学Java技术.已经默默决定了,如果消息证实是真的,我 ...
- 运行第一个.net core程序
前置条件 ubuntu已安装.net core运行环境 分6步 mkdir netcore 创建一个项目文件夹 cd netcore 进入该文件夹 dotnet new new命令 用于创建一个 ...
- unix ourhdr.h myerr.h
//在学UNIX环境高级编程时把下面两个头文件与源文件放在同一个文件下就可以正常编译了,我的是在ubuntu 12.04环境下,第一个程序编译和运行成功了,希望对大家有帮助(我已经根据网上的资料修改好 ...
- vc++ 在程序中运行另一个程序的方法
在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,Creat ...
- linux下通过命令启动多个终端运行对应的命令和程序
作者:张昌昌 在一些情况下,往往须要同一时候启动多个终端并让终端运行自己主动运行对应的命令,进而达到提高操作效率的目的.在linux下gnome-terminal启动终端命令, gnome-t ...
- iOS_02_第一个C语言程序(理解编译、连接、运行)
一.开发工具的选择 1. 可以用来写代码的工具:记事本.ULtraEdit.Vim.Xcode等. 2. 选择XCode的原因:苹果公司官方提供的开发利器.简化开发的工程.有高亮显示功能. 3. 使用 ...
- 解惑:在Ubuntu18.04.2的idea上运行Scala支持的spark程序遇到的问题
解惑:在Ubuntu18.04.2的idea上运行Scala支持的spark程序遇到的问题 一.前言 最近在做一点小的实验,用到了Scala,spark这些东西,于是在Linux平台上来完成,结果一个 ...
随机推荐
- [LOJ2541] [PKUWC2018] 猎人杀
题目链接 LOJ:https://loj.ac/problem/2541 Solution 很巧妙的思路. 注意到运行的过程中概率的分母在不停的变化,这样会让我们很不好算,我们考虑这样转化:假设所有人 ...
- c# webapi 过滤器token、sign认证、访问日志
1.token认证 服务端登录成功后分配token字符串.记录缓存服务器,可设置有效期 var token = Guid.NewGuid().ToString().Replace("-&qu ...
- Linux进程自保护攻防对抗技术研究(Process Kill Technology && Process Protection Against In Linux)
0. 引言 0x1: Linux系统攻防思想 在linux下进行"进程kill"和"进程保护"的总体思路有以下几个,我们围绕这几个核心思想展开进行研究 . 直接 ...
- node-red 安装
介绍 Node-RED背景介绍• Node-Red是IBM公司开发的一个可视化的编程工具.它允许程序员通过组合各部件来编写应用程序.这些部件可以是硬件设备(如:Arduino板子).Web API(如 ...
- git重置账号密码
1.打开控制面板(快捷打开win+R,输入control) 2.点击打开用户账户 3.点击凭据管理器 4.点击windows凭据删除你的git凭据即可
- docker 入坑1
本文是记录一下学习docker的过程,希望可以帮助到入门的朋友. 系统:ubuntu16.04 docker:18.09 打开官网:https://docs.docker.com/install/li ...
- Java调用WebService方法总结(8)--soap.jar调用WebService
Apache的soap.jar是一种历史很久远的WebService技术,大概是2001年左右的技术,所需soap.jar可以在http://archive.apache.org/dist/ws/so ...
- 安装License需要重启
"only commands for license handling are allowed in current state" Can you confirm if licen ...
- Android笔记(四十二) Android中的数据存储——SQLite(四)update
update方法的四个参数: update()方法参数 对应的sql部分 描述 table update table_name 更新的表名 values set column=xxx ContentV ...
- Graphviz install the Windows for Scyther
1.在Pycharm 中使用Scyther工具的时候需要导入 graphviz 直接在 Interpreter 上安装的售后会报错,如果在 IDE上无法支架安装的库可以试图在控制台上安装,控制台上无法 ...