Execute a system command: Difference between revisions
Content added Content deleted
Jazzedpineda (talk | contribs) (Add Plain English) |
(Updated with more modern example) |
||
Line 690: | Line 690: | ||
=={{header|FutureBasic}}== |
=={{header|FutureBasic}}== |
||
Classic FB using Pascal strings |
|||
This simple example prints the output to a console window. With its open "Unix" command, FB has robust capability as a system interface to the Free BSD Unix core of Macintosh OS X 10.x. |
|||
<syntaxhighlight lang="futurebasic"> |
<syntaxhighlight lang="futurebasic"> |
||
⚫ | |||
local fn DoUnixCommand( cmd as str255 ) |
local fn DoUnixCommand( cmd as str255 ) |
||
dim as str255 s |
dim as str255 s |
||
Line 735: | Line 733: | ||
usr |
usr |
||
var |
var |
||
</pre> |
|||
Modern FB using CFStrings |
|||
<syntaxhighlight> |
|||
⚫ | |||
// For remote uses like curl |
|||
// #plist NSAppTransportSecurity @{NSAllowsArbitraryLoads:YES} |
|||
local fn RunTerminalCommand( cmd as CFStringRef ) as CFStringRef |
|||
———————————————————————————————————————————————————————————————————————————————————————————————————— |
|||
ErrorRef err = NULL |
|||
CFStringRef outputStr = NULL |
|||
TaskRef task = fn TaskInit |
|||
TaskSetExecutableURL( task, fn URLFileURLWithPath( @"/bin/zsh" ) ) |
|||
CFStringRef cmdStr = fn StringWithFormat( @"%@", cmd ) |
|||
CFArrayRef args = fn ArrayWithObjects( @"-c", cmdStr, NULL ) |
|||
TaskSetArguments( task, args ) |
|||
PipeRef p = fn PipeInit |
|||
TaskSetStandardOutput( task, p ) |
|||
TaskSetStandardError( task, p ) |
|||
FileHandleRef fh = fn PipeFileHandleForReading( p ) |
|||
fn TaskLaunch( task, NULL ) |
|||
TaskWaitUntilExit( task ) |
|||
CFDataRef dta = fn FileHandleReadDataToEndOfFile( fh, @err ) |
|||
if err then NSLog( @"Error reading file: %@", fn ErrorLocalizedDescription( err ) ) : exit fn |
|||
fn FileHandleClose( fh, @err ) |
|||
if err then NSLog( @"Error closing file: %@", fn ErrorLocalizedDescription( err ) ) : exit fn |
|||
outputStr = fn StringWithData( dta, NSUTF8StringEncoding ) |
|||
end fn = outputStr |
|||
CFStringRef cmd |
|||
cmd = @"cal 2023" |
|||
NSLog( @"%@", fn RunTerminalCommand( cmd ) ) |
|||
HandleEvents |
|||
</syntaxhighlight> |
|||
{{output}} |
|||
<pre> |
|||
2023 |
|||
January February March |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 |
|||
8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 |
|||
15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 |
|||
22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 |
|||
29 30 31 26 27 28 26 27 28 29 30 31 |
|||
April May June |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 1 2 3 4 5 6 1 2 3 |
|||
2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 |
|||
9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 |
|||
16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 |
|||
23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 |
|||
30 |
|||
July August September |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 1 2 3 4 5 1 2 |
|||
2 3 4 5 6 7 8 6 _� _�7 8 9 10 11 12 3 4 5 6 7 8 9 |
|||
9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 |
|||
16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 |
|||
23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 |
|||
30 31 |
|||
October November December |
|||
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa |
|||
1 2 3 4 5 6 7 1 2 3 4 1 2 |
|||
8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 |
|||
15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 |
|||
22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 |
|||
29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 |
|||
31 |
|||
</pre> |
</pre> |
||