Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
unix_survival [2020/04/08 20:06] joshd |
unix_survival [2020/04/08 21:24] joshd |
| |
** Useful UNIX References ** | ** Useful UNIX References ** |
| |
| [[http://www.bitsavers.org/pdf/stanford/stanford_4.2_BSD_manual/4.2_BSD_Vol_2C.pdf|The 4.2BSD Manual]] is a good guide to BSD systems (generally applicable to 4.3, 2.11 and V8 Research UNIX). |
| |
| [[https://www.livingcomputers.org/UI/UserDocs/UNIX-SVR3-(WE-3B2)/UNIX_System_V_Users_Guide_Second_Edition_1987.pdf|UNIX System V User's Guide (Second Edition)]] and [[https://livingcomputers.org/UI/UserDocs/UNIX-SVR3-(WE-3B2)/UNIX_System_V_Users_Reference_Manual_1987.pdf|UNIX System V User's Reference]] are a useful references for System V-based systems (or close relatives). |
| |
[[https://www.livingcomputers.org/UI/UserDocs/Unix-v7-1/UNIX_Programmers_Manual_Seventh_Edition_Vol_2_1983.pdf|The UNIX Programmer's Manual (7th Edition)]] is an excellent overview for using UNIX for software development. | [[https://www.livingcomputers.org/UI/UserDocs/Unix-v7-1/UNIX_Programmers_Manual_Seventh_Edition_Vol_2_1983.pdf|The UNIX Programmer's Manual (7th Edition)]] is an excellent overview for using UNIX for software development. |
This wiki cannot provide an extensive tutorial for the C language, but we'll provide an example or two to get you started. [[https://archive.org/details/TheCProgrammingLanguageFirstEdition/page/n13/mode/2up|The C Programming Language]] is the classic reference for this (and belongs on every UNIX hacker's bookshelf) and should apply to all of the UNIX systems we have online (although some may also support the later ANSI C specification(s) as well. | This wiki cannot provide an extensive tutorial for the C language, but we'll provide an example or two to get you started. [[https://archive.org/details/TheCProgrammingLanguageFirstEdition/page/n13/mode/2up|The C Programming Language]] is the classic reference for this (and belongs on every UNIX hacker's bookshelf) and should apply to all of the UNIX systems we have online (although some may also support the later ANSI C specification(s) as well. |
| |
Use the editor of your choice to create the source file. We'll use //ed// here, as it's common to all UNIX systems, but //vi// may be a more friendly choice. | Use the editor of your choice to create the source file. We'll use //ed// here, as it's common to all UNIX systems, but //vi// may be a more friendly choice. This program is a version of your average "Hello, world!" program. It uses //printf// to output the //string// "Hello, world! to //stdout// and then exits. This example uses [[https://en.wikipedia.org/wiki/C_(programming_language)#K&R_C|K&R]] syntax: |
| |
<code> | <code> |
</code> | </code> |
| |
| Here's a more complex program. It makes use of //for// loops to print a small multiplication table. |
| |
| <code> |
| $ ed table.c |
| ?table.c |
| a |
| int main(argc, argv) |
| int argc; |
| char** argv; |
| { |
| int i,j; |
| |
| /* Use nested 'for' loops to print a 4x4 multiplication table. */ |
| for(i=1;i<5;i++) |
| { |
| for(j=1;j<5;j++) |
| { |
| /* '%d' means 'Substitute a numerical value here' */ |
| printf("%d x %d = %d\t", i, j, i * j); |
| } |
| |
| /* '\n' is the "newline" character -- this moves the cursor to the next line |
| for the next row of the table */ |
| printf("\n"); |
| } |
| |
| return 0; |
| } |
| . |
| w |
| 516 |
| q |
| $ |
| </code> |
| |
| Compiling this as in the above example and running it yields: |
| |
| |
| <code> |
| $ cc table.c |
| ./a.out |
| 1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 |
| 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 |
| 3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 3 x 4 = 12 |
| 4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 |
| $ |
| </code> |
| |
| |