Head First C ―頭とからだで覚えるCの基本
(オライリージャパン)
David Griffiths (著) Dawn Griffiths (著)
中田 秀基(監訳)(翻訳) 木下 哲也 (翻訳)
開発環境
- OS X Mavericks - Apple、たまにFreeBSD 10(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C (プログラミング言語)
- Clang/LLVM (コンパイラ)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の9章(プロセスとシステムサービス: 限界を超える)、エクササイズ(p.409)を解いてみる。
その他参考書籍
- プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
- C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、 谷口 功 (翻訳)、 オライリージャパン)
エクササイズ(p.409)
コード(BBEdit, Emacs)
sample409.c
#include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> int main(int argc, char *argv[]) { if(execl("/sbin/ifconfig", "/sbin/ifconfig", NULL) == -1) if (execlp("ipconfig", "ipconfig", NULL) == -1) { fprintf(stderr, "ipconfigを実行できません。:%s", strerror(errno)); return (1); } return (0); }
Makefile
CC=cc CFLAGS=-g -Wall SRC=sample409.c OBJ=sample409.o all: sample409 sample409: $(OBJ) $(CC) $(CFLAGS) $(OBJ) -o sample409 sample409.o: sample409.c $(CC) $(CFLAGS) -c sample409.c -o sample409.o clear: rm -rf sample409 $(OBJ)
入出力結果(Terminal)
$ make cc -g -Wall -c sample409.c -o sample409.o cc -g -Wall sample409.o -o sample409 $ ./sample409 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=3<RXCSUM,TXCSUM> inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 nd6 options=1<PERFORMNUD> gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280 stf0: flags=0<> mtu 1280 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether c8:2a:14:0c:f6:8c inet6 fe80::ca2a:14ff:fe0c:f68c%en0 prefixlen 64 scopeid 0x4 inet 169.254.135.15 netmask 0xffff0000 broadcast 169.254.255.255 nd6 options=1<PERFORMNUD> media: autoselect (1000baseT <full-duplex,flow-control>) status: active en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether e0:f8:47:2f:38:ce inet6 fe80::e2f8:47ff:fe2f:38ce%en1 prefixlen 64 scopeid 0x5 inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255 nd6 options=1<PERFORMNUD> media: autoselect status: active en2: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=60<TSO4,TSO6> ether d2:00:1c:3c:0c:20 nd6 options=1<PERFORMNUD> media: autoselect <full-duplex> status: inactive fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078 lladdr 70:cd:60:ff:fe:c3:c0:c2 nd6 options=1<PERFORMNUD> media: autoselect <full-duplex> status: inactive p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304 ether 02:f8:47:2f:38:ce media: autoselect status: inactive vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:50:56:c0:00:01 inet 172.16.130.1 netmask 0xffffff00 broadcast 172.16.130.255 vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:50:56:c0:00:08 inet 172.16.115.1 netmask 0xffffff00 broadcast 172.16.115.255 utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380 inet6 fe80::7994:f032:745c:3cdb%utun0 prefixlen 64 scopeid 0xb inet6 fd0f:8fd1:9ac4:ae59:7994:f032:745c:3cdb prefixlen 64 nd6 options=1<PERFORMNUD> $
0 コメント:
コメントを投稿